package com.zrrd.thread._02_implRunnable;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * @author WanJl
 * @version 1.0
 * @title MyThread
 * @description
 * @create 2023/10/29 10:46
 */

//1、定义一个类MyRunnable实现Runnable接口
public class MyRunnable implements Runnable{
    //2、在MyRunnable类中重写run()方法
    @Override
    public void run() {
        try {
            FileInputStream inputStream = new FileInputStream("D:/123.jpg");
            System.out.println("hello");
            System.out.println("当前线程是："+Thread.currentThread().getName());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }


    public static void main(String[] args) {
        //3、创建MyRunnable类的对象
        //注意，虽然MyRunnable实现了Runnable接口，但是MyRunnable并不是线程类。
        //他只是符合了Runnable，能够作为线程类的参数类（目标类），
        //线程需要以MyRunnable的对象为目标创建并启动线程
        MyRunnable mr = new MyRunnable();
        //4、创建Thread类的对象，把MyRunnable对象作为构造方法的参数
        Thread t = new Thread(mr);
        Thread t2 = new Thread(mr,"新线程");
        //匿名内部类：直接创建父类或接口的子类(实现类)对象。
        Thread t3 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("当前线程是："+Thread.currentThread().getName());
            }
        },"新线程002");
        //匿名内部类：直接创建父类或接口的子类(实现类)对象。
        Thread t4 = new Thread(
                () -> System.out.println("当前线程是："+Thread.currentThread().getName()),
                "新线程002");

        //5、启动线程
        t.start();
        t2.start();
        t3.start();


    }
}
